home *** CD-ROM | disk | FTP | other *** search
-
-
- Columbia MM
- A Mail Manager Program in C
-
-
- Chris Maio
- Computer Research Facilities, Computer Science Department (formerly)
-
- Fuat Baran
- Howie Kaye
- Melissa Metz
- Center for Computing Activities
-
- Columbia University
-
-
-
-
- ABSTRACT
- --------
-
- Columbia MM is a mail manager program based on the TOPS-20 MM program
- running on Digital Equipment Corporation DEC20 systems. Columbia MM
- is written in C using the CCMD (TOPS-20 COMND Jsys in C) package
- developed at Columbia University.
-
- MM currently runs under various flavors of UNIX. Ports to various
- other microcomputer and mainframe operating systems are planned.
-
-
- INTRODUCTION
- ------------
-
- Columbia University used to have a number of DECSYSTEM-2060's on
- campus. (The Columbia University Center for Computing Activities
- (CUCCA) had four, the Computer Science Department had one, and
- Teachers College had one.) Our user community, especially the less
- technically experienced, grew accustomed to the friendly user
- interface provided by programs written for TOPS-20. The two most
- widely used programs were the Exec (equivalent of the shell in UNIX),
- and MM, the mail program, both written using the TOPS-20 COMND Jsys
- (monitor call). The users loved the ability to see what input was
- expected next (the help provided when you type a '?' anywhere in a
- parse), and command completion (completion of unique input when an ESC
- was typed). Unfortunately, the good days did not last. DEC (Digital
- Equipment Corporation) discontinued the DEC20 line and, due to rising
- maintenance costs, it was decided that all of our DEC20's would be
- phased out and replaced by other systems.
-
- Various people were consulted, surveys were conducted, and plans were
- made. When asked what a minimally acceptable system should have,
- a large number of users said that an MM equivalent would be highest on
- their list of priorities. (Some others were Emacs, Scribe, etc.)
- People that knew about the usual mail facility supplied with Unix
- stated that they did not like it at all.
-
- CUCCA and the CS Department ultimately decided to go with various UNIX
- machines to replace the aging DEC20's. By 1988, CUCCA had a DEC VAX
- 8700 running Ultrix 2.0, a VAX 750, numerous microvaxen, and three Sun
- 4s. Over the previous two years student computing had slowly migrated
- from the DEC20's to Unix systems.
-
- At about the same time as all this was happening, a package called
- CCMD was also being developed (at CUCCA, initially by Andrew Lowry and
- later on by Howie Kaye). CCMD is a general parsing mechanism for
- developing line-oriented user interfaces to programs. It is based on
- the functionality of TOPS-20's COMND Jsys. CCMD allows a program to
- parse for various field types (file names, user names, dates and
- times, keywords, numbers, arbitrary text, tokens, etc.). The original
- reason for writing the CCMD package was to use it in locally developed
- microcomputer cluster software. For various reasons which we won't go
- into here, this project never saw the light of day, though the CCMD
- package came about as a useful product.
-
- CCMD was announced to the public on some Internet mailing lists as
- well as at Usenix in the summer of 1987. A mailing list to discuss
- TOPS-20 to UNIX migration issues was set up
- (info-topsux@cunixc.cc.columbia.edu). (Send requests to
- info-topsux-request@cunixc.cc.columbia.edu.) We began using CCMD
- internally for various programs. Our operations interface, group
- management program etc. were all written using CCMD as the user
- interface.
-
- Chris Maio, at the Computer Science Department, began writing MM in C
- using CCMD. CUCCA also decided that it needed to make an MM-like
- program available to its users who were migrating from the DEC20's.
- So three systems programmers from CUCCA (Fuat Baran, Howie Kaye and
- Melissa Metz) joined Chris Maio in his efforts, and Columbia-MM was
- born.
-
- The first internal release of Columbia MM was unleashed on our user
- population in January of 1988. Since then we have put up numerous new
- versions internally, and in May 1988 we began beta testing with the
- help of eager people at other sites.
-
-
-
- DESCRIPTION
- -----------
-
- MM is a powerful electronic mail system which allows you to send,
- read, edit and manage messages quickly and easily. Since it is
- written with the CCMD package, you can hit the escape key to complete
- commands and "?" to find out what MM is expecting.
-
- These are the five most popular commands:
-
- SEND user-name Send mail to specified user-name. May be a USER-NAME
- or a list of USER-NAMES, local or network addresses.
-
- READ msgs Read specified messages, MSGS, from current file.
- The default is to read UNSEEN messages.
-
- DELETE msgs Delete specified messages, MSGS, from current file.
-
- HEADERS msgs Give a brief summary of the specified messages, MSGS.
-
- HELP topic Type a message explaining the specified TOPIC.
-
-
- MESSAGE SEQUENCES
- -----------------
-
- A message sequence is a series of messages that have some trait in
- common. Various specifiers, listed below, identify a message
- sequence; the intersection of the specifiers given determines the
- messages to be processed. Some specifiers are compound and accept a
- string argument (e.g., 'FROM FOO', or 'SUBJECT HOMEWORK'). If
- the argument to any of these has a space (or certain other
- non-alphanumeric characters) in it, the argument should be quoted, as
- in 'FROM "JOHN SMITH"'.
-
- The message sequences available are:
-
- AFTER Equivalent to SINCE
- ALL Every message in your file, whether deleted or not.
- ANSWERED Messages you have REPLY'd to or ANSWER'd
- BEFORE Messages before a given date
- CURRENT MM keeps a pointer to the current message it is
- set at. This sequence (which consists of only 1
- message obviously) is that message.
- DELETED Messages you have marked for deletion with the
- DELETE command or the MOVE command
- FLAGGED Messages you have marked with the FLAG command
- FROM Followed with a word or phrase denoting the
- senders of the message; e.g. HEADERS FROM SMITH
- would show all the headers of the messages you've
- received from SMITH.
- INVERSE This reverses the sequence. Instead of
- taking the sequence as lowest message number to
- highest, it takes it from highest to lowest
- KEYWORD Messages containing the specified keyword
- LAST Followed with a number specifying the last n messages
- in the file
- NEW Messages that are new as of this MM session
- ON Messages on a given date
- PREVIOUS-SEQUENCE
- The last sequence used in an MM command
- RECENT Messages that were new as of this MM session but which
- have already been seen
- SEEN Messages that you have read
- SINCE Messages after a given date (entered as DATE-MONTH-YEAR
- or mm/dd/yy)
- SUBJECT Followed with a word or phrase denoting the subject
- of the message; e.g. HEADERS SUBJECT MEETING would show
- you all the headers of the messages about a meeting
- (assuming they say MEETING in the header)
- TEXT Followed with a word, phrase or sentence denoting
- the text of the message; e.g. HEADERS TEXT BIZARRE
- would show you the headers of all the messages with
- the word BIZARRE in their text or headers
- TO Followed with the name of a recipient, shows messages
- whose To or cc fields contain that recipient.
- UNANSWERED Messages you have not REPLY'd to or ANSWER'd
- UNDELETED Messages that haven't been deleted via the DELETE or
- MOVE commands
- UNFLAGGED Messages that haven't been flagged by the FLAG command
- UNKEYWORD Messages not included in the specified keyword
- UNSEEN Messages you haven't seen via the READ or TYPE command
-
- Also, message numbers are allowed to be specified as a sequence, i.e.
- 1,2,3,5,8 - Messages 1, 2, 3, 5, and 8
- 1:3,5:8 - Messages 1 through 3 and 5 through 8
- 5 - Message number 5
- 6+3 - Messages 6, 7, and 8
-
-
-
- CCMD FEATURES
- -------------
-
- We have already mentioned that MM is written with the CCMD package.
- This provides sevaral features to make it easier for MM to parse your
- input.
-
- Probably the most important feature is instant help. At almost any
- point when MM is waiting for input from you, you can type a "?", and
- MM will tell you what it is looking for. (One exception is when MM is
- parsing an outgoing message, at which time the question mark will
- simply get inserted into the text like any other character.) If you
- have partially typed a command, MM will only show you things that
- match the current input.
-
- Another feature is command completion or recognition. This means that
- when MM is parsing, you can hit the ESCAPE key or TAB key and MM will
- complete the current field (command keyword, filename, etc.), if it is
- unambiguous. Control-F works similarly to tab and escape, but only
- completes to a punctuation character. If what you have typed is
- ambiguous, MM will beep. You can then hit "?" to find out the
- available completions. For example, if you were typing in the file
- name "mail.txt" and there were no other files in your directory
- beginning with "m", you could simply type "m<ESC>" and MM would echo
- "mail.txt ". If you typed "m<Control-F>" MM would echo "mail" and
- wait for you to finish it. This is useful when specifying the name of
- a new file.
-
- A third feature is command retry. This means that after you have
- typed a command and hit return, then realize that was not what you
- meant to do, you can redo the command. When you get the prompt back
- from MM, if the VERY NEXT character you type is control-H, MM will
- redisplay your last command. You can then delete the offending parts
- and run the command you wanted. This saves you from having to retype
- the entire command.
-
- A new feature is command line editing, which include a command history
- mechanism. Editing is done with standard emacs-like commands.
-
- MM will accept comments on any line -- this is most useful inside
- files run by the "take" command. The comment start string is
- typically "#", and the comment end string is end of line.
-
- In case you should want to input any of these special characters, CCMD
- also provides a quoting character, control-V. Control-V followed by
- any character simply inserts that character into the current command.
-
-
- COMPATIBILITY
- -------------
-
- MM is compatible with various other mail programs, and has hooks for
- adding more in the future. MM currently supports the following mail
- file formats:
-
- mtxt:
- mtxt is the format used by MM-20 on DEC20s. This format is not compatible
- with any other Unix mail utilities, but has the advantage of being easier
- to parse. That is, mm will read in an mtxt format file faster than any
- other format.
-
- Babyl:
- Babyl is the mail file format used by gnuemacs rmail mode. Use this
- format if you wish to use emacs for reading your mail as well as mm.
-
- mbox:
- mbox is the mail file format the Unix mail(1) program uses. Use this format
- if you wish to use mail(1) for reading your mail as well as mm.
-
- Future plans include supporting mh(1), and pop (post office protocol)
- for remote systems (PC's, ...).
-
-
- MAIL DELIVERY
- -------------
-
- MM currently uses sendmail(8) to deliver mail, but it should be fairly
- easy to make it use other delivery systems.
-
-
- SYSTEMS
- -------
-
- MM comes with configuration files for 4.3 BSD; HP/UX; Mt Xinu 4.3;
- SunOS versions 3.4, 3.5, and 4.0 (works for 4.1); Ultrix 2.0; AIX for
- an IBM RT; Dynix 2.1.1; Integrated Solutions Release 4.0; System V on
- a 3B2, and version 5.2; and Encore's Umax. (At Columbia we currently
- only run MM under SunOS 4.1 and Encore's Umax 4.3, and rely on our
- formerly-beta testers for the other ports.)
-
-
- AVAILABILITY
- ------------
-
- MM is currently just out of Beta Test and is actively worked on. If
- you wish to hear about new versions and patches, please send mail to
-
- info-mm-request@columbia.edu (Internet)
- info-mm-request%cunixf.cc.columbia.edu@cuvma.cc.columbia.edu (Bitnet)
- ...rutgers!columbia!info-mm-request (Usenet)
-
- and we'll add you to our list of people involved in MM.
-
- MM is currently available via anonymous ftp from
- cunixf.cc.columbia.edu (128.59.40.130), in the mm subdirectory. The
- following files are currently available:
-
- mm-0.90.0.tar.Z # MM version 0.90 (new release)
- mm-intro.txt # general introductory document
- release-0.87.txt # release notes for 0.87 (changes
- # since 0.86)
- release-0.88.txt # release notes for 0.88 (changes
- # since 0.87)
- release-0.90.txt # release notes for 0.90 (changes
- # since 0.88)
- patch.xx # numbered patches for the current version
-
- mm-{Version #}.tar.Z contains the full (compressed and tarred) sources
- to MM and CCMD. Contained in the mm subdirectory (once uncompressed
- and untarred), is an INSTALL file with installation hints. We
- occasionally send out patches to our mailing list.
-
-
- COPYRIGHT
- ---------
-
- Columbia MM carries the following copyright notice:
-
-
- Copyright (c) 1986, 1990, The Trustees of Columbia University in the
- City of New York. Chris Maio, Computer Research Facilities, Computer
- Science Department (formerly), Fuat C. Baran, Howard Kaye, Melissa
- Metz, Academic Systems Group, Center for Computing Activities.
-
- Permission is granted to any individual or institution to use, copy,
- or redistribute this software so long as it is not sold for profit,
- provided that this notice and the original copyright notices are
- retained. Columbia University makes no representations about the
- suitability of this software for any purpose. It is provided "as is"
- without express or implied warranty.
-